package algotithm.leetcode.tree.test590;

import java.util.LinkedList;
import java.util.List;


class Node {
    int val;
    List<Node> children;

    public Node (int val) {
        this.val = val;
    }

    public Node (int val, List<Node> children) {
        this.val = val;
        this.children = children;
    }
}
/**
 * @author zhouyanxiang
 * @Date 2021-02-2021/2/3-14:52
 * @Title 590 N叉树的后序遍历
 */
public class Solution {

    public static void main(String[] args) {
//        Node node1 = new Node(1);
//        Node node2 = new Node(3);
//        Node node3 = new Node(2);
//        Node node4 = new Node(4);
//        Node node5 = new Node(5);
//        Node node6 = new Node(6);
//        // 1
//        List<Node> list1 = new LinkedList<>();
//        list1.add(node2);
//        list1.add(node3);
//        list1.add(node4);
//
//        // 2
//        List<Node> list2 = new LinkedList<>();
//        list2.add(node5);
//        list2.add(node6);
//        // 3
//        List<Node> list3 = new LinkedList<>();
//        List<Node> list4 = new LinkedList<>();
//        List<Node> list5 = new LinkedList<>();
//        List<Node> list6 = new LinkedList<>();
//        Node root1 = new Node(1,list1);
//        Node root2 = new Node(3,list2);
//        Node root3 = new Node(2,list3);
//        Node root4 = new Node(4,list4);
//        Node root5 = new Node(5,list5);
//        Node root6 = new Node(6,list6);
//
//        Solution solution = new Solution();
//        List<Integer> postorder = solution.postorder(root1);
//        for (Integer value : postorder) {
//            System.out.print(value + " ");
//        }
    }

    public List<Integer> postorder(Node root) {
        LinkedList<Node> stack = new LinkedList<>();
        LinkedList<Integer> res = new LinkedList<>();
        if (root == null) {
            return res;
        }
        stack.add(root);
        while (!stack.isEmpty()) {
            Node tmp = stack.pollLast();
            res.addFirst(tmp.val);
            stack.addAll(tmp.children);
        }
        return res;
    }



}
